iT邦幫忙

2024 iThome 鐵人賽

DAY 19
0
Python

Django - 製作網頁一點通系列 第 19

Day19 - Django資料庫撰寫

  • 分享至 

  • xImage
  •  

根據DAY17的構想,我們現在來依樣畫葫蘆,把想像中的資料庫寫出來

以下的程式都寫在models.py中,

  • IntegerField : 整數類型欄位,用於儲存整數資料
  • CharField : 代表一個字元類型欄位,適合儲存短文字。需要指定最大字元長度 (max_length)。
  • TextField : 用於儲存長篇文字,比 CharField 能儲存更多文字內容,無需設定 max_length。
  • DateTimeField : 用於儲存日期和時間的欄位。
    可以選擇 auto_now_add(創建時自動儲存當前時間)或 auto_now(每次更新時自動儲存當前時間)。
  • ForeignKey : 表示與其他模型的關聯。

  1. User使用者

使用Django內置的使用者模組

  • models.py
from django.contrib.auth.models import User

https://ithelp.ithome.com.tw/upload/images/20241003/20169478ne6f05ykWx.png


  1. Task任務
  • models.py
class Task(models.Model):
    id = models.IntegerField(primary_key=True)
    title = models.CharField(max_length=255)
    description = models.TextField(blank=True, null=True)
    due_date = models.DateTimeField(blank=True, null=True)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)
    priority = models.IntegerField()
    status = models.CharField(max_length=50)
    user_id = models.ForeignKey(User, on_delete=models.CASCADE)

    def __str__(self):
        return self.title

https://ithelp.ithome.com.tw/upload/images/20241003/20169478YGr773FmbX.png


  1. SharedTask共享任務
  • models.py
class SharedTask(models.Model):
    id = models.IntegerField(primary_key=True)
    task = models.ForeignKey(Task, on_delete=models.CASCADE)
    user = models.ForeignKey(User, on_delete=models.CASCADE)

    def __str__(self):
        return f"{self.task.title} shared with {self.user.username}"

https://ithelp.ithome.com.tw/upload/images/20241003/201694780ZQuXaUIv7.png


  1. Comment留言
  • models.py
class Comment(models.Model):
    id = models.IntegerField(primary_key=True)
    task = models.ForeignKey(Task, on_delete=models.CASCADE)
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    content = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return f"Comment by {self.user.username} on {self.task.title}"

https://ithelp.ithome.com.tw/upload/images/20241003/20169478Mpisp6pg0D.png


  1. ActivityLog活動日誌
  • models.py
class ActivityLog(models.Model):
    id = models.IntegerField(primary_key=True)
    task = models.ForeignKey(Task, on_delete=models.CASCADE)
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    action = models.CharField(max_length=50)
    action_time = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return f"{self.action} by {self.user.username} on {self.task.title}"

https://ithelp.ithome.com.tw/upload/images/20241003/20169478TIYXn14JPX.png


上一篇
Day18 - 開始一個Django專案
下一篇
Day20 - 進入後台
系列文
Django - 製作網頁一點通28
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言